package com.wxm.utils;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

import java.util.Map;
import java.util.function.Supplier;

/**
 * <p>
 *      请求参数转json
 * </p>
 *
 * @author: wxm
 * @Date: 2023/4/7
 */
public interface ParamJsonUtils {
    /**
     * 将类信息转换为JSON
     * @return JSONObject
     */
    default JSONObject toJsonObject(){
        return JSONObject.parseObject(JSONObject.toJSONString(this));
    };

    default String toSortJsonStr(){
        return JSONObject.toJSONString(this, SerializerFeature.DisableCircularReferenceDetect);
    }

    /**
     * 将Map构造的方法传递给JSONObject
     * @return supplier 构造Map的方法
     */
    default JSONObject toJsonObject(Supplier<? extends Map<String,Object>> supplier){
        JSONObject jsonObject = new JSONObject(supplier.get());
        jsonObject.putAll(this.toJsonObject());
        return jsonObject;
    }
}
